package cn.iocoder.yudao.module.brokerage.user.mq;

import cn.hutool.extra.spring.SpringUtil;
import cn.iocoder.yudao.module.api.brokerage.user.message.BrokerageUserBindMessage;
import cn.iocoder.yudao.module.api.brokerage.user.message.BrokerageUserUnbindMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * 推广用户 事件生产者
 *
 * @author 山野羡民
 */
@Slf4j
@Component
public class BrokerageUserProducer {

    /**
     * 发送 {@link BrokerageUserBindMessage} 消息
     *
     * @param userId 用户编号
     * @param fatherUserId 上级用户编号
     */
    public void sendUserBindMessage(Long userId, Long fatherUserId) {
        log.info("[sendUserBindMessage][userId({}) fatherUserId({})]", userId, fatherUserId);
        // 生产推广关系绑定成功事件，其他模块收到消息后进行相应处理
        SpringUtil.getApplicationContext().publishEvent(new BrokerageUserBindMessage(userId, fatherUserId));
    }

    /**
     * 发送 {@link BrokerageUserUnbindMessage} 消息
     *
     * @param userId 用户编号
     * @param fatherUserId 上级用户编号
     */
    public void sendUserUnbindMessage(Long userId, Long fatherUserId) {
        log.info("[sendUserUnbindMessage][userId({}) fatherUserId({})]", userId, fatherUserId);
        // 生产推广关系绑定成功事件，其他模块收到消息后进行相应处理
        SpringUtil.getApplicationContext().publishEvent(new BrokerageUserUnbindMessage(userId, fatherUserId));
    }

}
